install.packages("tidyverse")
install.packages("haven")Clase 2a - Preprocesamiento de la Encuesta Permantente de Hogares
1 Importación de datos
1.1 Librerías
Para esta clase, necesitaremos tener instaladas las siguientes librerías:
1.2 El formato .csv
La Encuesta Permanente de Hogares (EPH), desde la página del INDEC puede ser descargada, desde 2016, en formato .txt o .xls. Lo más recomendable es descargarla en .txt, ya que es similar al formato .csv. Dicho formato, Comma Separated Values, es uno de los más utilizados para almacenar datos tabulares: cada fila representa una observación y cada columna una variable. Los valores de las columnas están separados por comas (o punto y coma, dependiendo del idioma) y la primera fila suele contener los nombres de las variables.
Usando R base, podemos leer los datos a través de la función read.csv(). En este caso probaremos abrir la última base de la EPH disponible, descargándola del sitio web del INDEC. Es recomendable tener una carpeta de fuentes o bases en el proyecto de R para poder importar directamente la base y asignarla a un objeto.
eph_ind_225 <- read.csv("bases/usu_individual_T225.txt", sep = ";")Otra forma de cargar los datos es a través de la librería readr1. Esta librería es parte del tidyverse y es una alternativa más rápida y eficiente para leer datos. Para cargar los datos con readr, primero llamamos a la librería tidyverse y luego usamos la función read_delim().
library(tidyverse)
eph_ind_225 <- read_delim("bases/usu_individual_T225.txt", delim = ";")Fijense que lo que le estamos indicando a R es que abra el archivo que se encuentra en la dirección bases/usu_individual_T225.txt, que se encuentra en la carpeta del proyecto, y que lo guarde en un objeto llamado eph_ind_225.
Para comprobar que la operación se realizó con éxito debemos revisar el ambiente de trabajo (environment). En dicha ventana, se nos indica la cantidad de observaciones (46086) y variables (235) que tiene el objeto en cuestión. Si hacemos click en el mismo, accederemos a la base de datos completa.
Muchas veces nos encontramos con que las bases de datos con información separada por comas o puntos y comas (;) no están en formato .csv sino en formato .txt, como es el caso de la Encuesta Permanente de Hogares del INDEC. En estos casos, podemos utilizar la misma función read.csv() o read_csv(), ya que ambas permiten especificar el separador de columnas a través del argumento sep. Por ejemplo, si el separador es punto y coma, podemos usar read.csv("archivo.txt", sep = ";") o read_csv("archivo.txt", delim = ";").
1.3 El formato nativo: .rds
Otra forma de guardar y cargar datos es a través del formato nativo de R: .rds. Para guardar un objeto en este formato, usamos la función saveRDS() y para cargarlo, usamos readRDS().
Ahora probaremos abrir una de las bases de datos de la encuesta del Latinobarómetro ya que desde su sitio web brindan sus datos en diversos formatos. Descarguemos el archivo del año 2023 en formato .rds y lo colocamos en la carpeta bases.
Nuevamente, para abrir este archivo debemos asignarselo a un objeto, en este caso lo llamaremos latinobarometro.
latinobarometro <- readRDS("bases/Latinobarometro_2023_Esp_Rds_v1_0.rds")Si bien esto dependerá de la memoria RAM de cada computadora, abrir un archivo en formato .rds suele ser considerablemente más rápido que abrir un archivo en formato .csv, sobre todo cuando tienen una gran cantidad de casos y de variables.
Como podemos observar desde el ambiente de trabajo, la base de datos de personas tiene 19205 observaciones y 274 variables.
1.4 Abriendo otros formatos
Desde R también podemos abrir otros formatos comúnmente utilizados de forma sencilla. Por ejemplo, si queremos abrir un archivo en formato .xlsx o .xls podemos hacerlo a través del paquete readxl. Por otro lado, si queremos traer datos específicos en formato .dta (Stata) o .sav (SPSS), podemos hacerlo a través de los paquetes haven y foreign, respectivamente, sin ningún inconveniente.
Por ejemplo, descarguemos la base de Latinobarómetro nuevamente pero en formato .sav. La función que utilizaremos es read_spss() del paquete haven y asignaremos la base a un objeto llamado latinobatrometro_spss.
library(haven)
latinobarometro_spss <- read_spss("bases/Latinobarometro_2023_Esp_Spss_v1_0.sav")1.5 Trayendo datos desde la web
Otra de las potencialidades que ofrecen estas funciones es que permiten leer datos directamente desde alguna URL de la web. Por ejemplo, hagamos una prueba importando alguna base que se encuentre disponible en el repositorio de datos abiertos de Argentina.
Probemos con la Encuesta Nacional de Consumos Culturales de 2017. Para ello, utilizaremos la función read_csv() del paquete readr y le pasaremos como argumento la URL del archivo.
cc2017 <- read_csv("https://datos.cultura.gob.ar/dataset/251c2ac2-e670-451c-9dbf-a4212af225b5/resource/171494ce-e3cf-43fb-ad6e-f204bae1bb19/download/encc_2017.csv")